<?php

class ChucVuController extends BaseController {

    private $chucvu;

    //Ham xay dung
    function __construct() {
        $this->chucvu = new ChucVu();
    }

    //Phuong thuc hien ds thong tin
    public function index() {
        $appendlinks = array();
        $key = (Input::has('key')) ? $appendlinks['key'] = ucwords(preg_replace('/\s\s+/', ' ', trim(Input::get('key')))) : null;

        $data = $this->chucvu->GetList($key);
        $data->appends($appendlinks)->links();

        $currentPage = (Input::has('page')) ? (Input::get("page") > 1) ? Input::get("page") : 1 : 1;
        $numRows = ($currentPage - 1) * $this->chucvu->GetCHUCVU();

        return View::make('qlchucvu.index')
                        ->with("key", $key)
                        ->with("numRows", $numRows)
                        ->with("data", $data)
                        ->with("title", "Danh sách chức vụ thanh tra");
    }

    //Phuong thuc hien khung them thong tin
    public function add() {
        return View::make('qlchucvu.add')
                        ->with("title", "Thêm chức vụ thanh tra");
    }

    //Phuong thuc xu ly luu thong tin moi
    public function save() {
        if ($this->chucvu->validation(Input::all())) {
            $data = array(
                "TEN_CV" => trim(Input::get("tencv"))
            );
            if ($this->chucvu->SaveIn($data)) {
                return Redirect::to('ql=themchucvu')
                                ->with('success', 'Thêm chức vụ hoàn tất!');
            }
            return Redirect::to('ql=themchucvu')
                            ->withInput()
                            ->with('error', 'Thêm chức vụ thất bại do đã tồn tại chức vụ này trong CSDL!');
        }
        return Redirect::to('ql=themchucvu')
                        ->withInput()
                        ->with('error', 'Dữ liệu nhập vào không phù hợp!');
    }

    //Phuong thuc hien khung sua thong tin xac dinh
    public function edit() {
        if (Input::has('id')) {
            $id = Input::get('id');
            if (is_numeric($id)) {
                $row = $this->chucvu->GetOne($id);
                $stt = 0;

                return View::make('qlchucvu.view')
                                ->with("stt", $stt)
                                ->with("row", $row)
                                ->with("title", "Xem thông tin chi tiết chức vụ");
            }
        }
        return $this->index();
    }

    //Phuong thuc xu ly luu thong tin da sua
    public function store() {
        $id = Input::get("id");
        $data = array(
            "TEN_CV" => trim(Input::get("tencv"))
        );
        if ($this->chucvu->validation(Input::all())) {
            if ($this->chucvu->StoreIn($data, $id)) {
                return Redirect::to('ql=dschucvu')
                    ->with("success", "Sửa chức vụ hoàn tất!");
            }
            return Redirect::back()
                    ->with("error", "Sửa thất bại do chức vụ này đã tồn tại!");
        }
        return Redirect::back()
            ->with("error", "Sửa thất bại do dữ liệu không phù hợp!");
    }

    //Phuong thuc xoa mot thong tin nao do
    public function remove() {
        if (Input::has("id")) {
            $id = Input::get("id");
            if (is_numeric($id)) {
                if ($this->chucvu->Remove($id)) {
                    $appendlinks = array();
                    $key = (Input::has('key')) ? $appendlinks['key'] = ucwords(preg_replace('/\s\s+/', ' ', trim(Input::get('key')))) : null;

                    try {
                        $data = $this->chucvu->GetList($key);
                        $data[0]->TEN_CV; //Bẫy lỗi
                    } catch (Exception $ex) {
                        $url = url("ql=dschucvu");
                        $currentPage = (Input::has('page')) ? (Input::get("page") > 1) ? Input::get("page") : 1 : 1;
                        Input::merge(array('page' => ( --$currentPage == 0) ? 1 : $currentPage));

                        $data = $this->chucvu->GetList($key);
                        $data->setBaseUrl('ql=dschucvu');
                        $data->appends($appendlinks)->links();

                        $numRows = ($currentPage - 1) * $this->chucvu->GetCBTT();
                        $url = $url . "?page=" . $currentPage . (($key != null) ? "&key=" . $key : "");
                        return View::make('qlchucvu.index')
                                        ->with("key", $key)
                                        ->with("numRows", $numRows)
                                        ->with("data", $data)
                                        ->with("url", $url)
                                        ->with("warning", "Xóa chức vụ thanh tra hoàn tất!<br/>Cảnh báo: không khuyến khích việc xóa dữ liệu này.")
                                        ->with("title", "Danh sách chức vụ thanh tra");
                    }
                    return Redirect::back()
                                    ->with("warning", "Xóa chức vụ hoàn tất!<br/>Cảnh báo: không khuyến khích việc xóa dữ liệu này.");
                }
                return Redirect::back()
                                ->with("error", "Xóa chức vụ thất bại do cán bộ này đã phát sinh trong các đoàn thanh tra!");
            }
        }
        return Redirect::back()
                        ->with("error", "Không thể xóa do không có chức vụ này trong CSDL!");
    }
    
    //Tim kiem thong tin du lieu voi ajax
    public function search()
    {
        if(Request::ajax())
        {
            $tencv = Input::get('tencv');
            return Response::json($this->chucvu->GetWithTENCV($tencv));
        }
    }
}
